package com.joolun.mall.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chain_plan")
public class ChainPlan extends Model<ChainPlan> {
    /**
     * 计划id
     */
    private Long id;
    /**
     * 计划编号（自动生成规则：JL+年月日+三位数字递增）
     */
    private String code;

    /**
     * 计划名称
     */
    private String name;

    /**
     * 小程序链接
     */
    private String wxLink;

    /**
     * 品牌ID
     */
    private Integer brandId;

    /**
     * 品牌名称
     */
    private String brandName;


    /**
     * 上新日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date newDate;

    /**
     * 统一提示
     */
    private String remind;

    /**
     * 状态（0正常 1停用）
     */
    private String status;

    /**
     * 预留状态
     */
    private String reserveStatus;

    /**
     * 删除标志（0存在 2删除）
     */
    private String delFlag;

    /** 创建者 */
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 备注 */
    private String remark;



    //-----------查询参数 不在数据库表中的字段-------------------------------------------------------------------------------------------------------

    /**
     * 款号列表
     */
    @TableField(exist = false)
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private List<Integer> brandIds;

    /**
     * 款号列表
     */
    @TableField(exist = false)
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private List<String> spuCodes;

    /**
     * sku列表
     */
    @TableField(exist = false)
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private List<String> skuCodes;

    /**
     * 接龙链接
     */
    @TableField(exist = false)
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String chainName;

    /**
     * 计划开始时间范围--开始
     */
    @TableField(exist = false)
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date beginPlanBeginDate;

    /**
     * 计划开始时间范围--结束
     */
    @TableField(exist = false)
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endPlanBeginDate;

    /**
     * 计划结束时间范围--开始
     */
    @TableField(exist = false)
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date beginPlanEndDate;

    /**
     * 计划结束时间范围--结束
     */
    @TableField(exist = false)
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endPlanEndDate;

    /**
     * 创建时间--查询开始
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private Date beginCreateTime;

    /**
     * 创建时间--查询结束
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private Date endCreateTime;

    /**
     * 计划状态 0-未开始 10-进行中 20-已结束
     */
    @TableField(exist = false)
//    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private Integer planState;

    //-----------返回参数 不在数据库表中的字段-------------------------------------------------------------------------------------------------------


    /**
     * 关联的接龙链接列表（非数据库字段）
     */
    @TableField(exist = false)
    private List<Chain> chains;


    /**
     * 计划开始时间
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    private Date planBeginDate;


    /**
     * 计划结束时间
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    private Date planEndDate;


    /**
     * 上新款数
     */
    @TableField(exist = false)
    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    private Integer spuCount;

    /**
     * 接龙链接
     */
    @TableField(exist = false)
    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    private Integer chainCount;

}
